home *** CD-ROM | disk | FTP | other *** search
- ;;; $Id: xpkFAST.s,v 1.5 1993/06/28 18:20:03 roques Exp $
-
- ;;; The shared library bureaucrazy(!) for xpkFAST.
-
- ;sys inc
- include "exec/types.i"
- include "exec/initializers.i"
- include "exec/libraries.i"
- include "exec/lists.i"
- include "exec/nodes.i"
- include "exec/resident.i"
- ;xpk inc
- include "libraries/xpk.i"
- include "libraries/xpksub.i"
- ;fast inc
- include "fast.i"
-
- ; compress
- XREF PackChunk
- XREF PackFree
- XREF PackReset
-
- ; decompress
- XREF UnpackChunk
- XREF UnpackFree
-
- ; FASTmisc
- XREF PackerInfo
-
- XLIB AllocMem
- XLIB FreeMem
- XLIB Remove
-
- Pri equ 0
-
-
- CODE
-
- DummyEntry: moveq #-1,d0 ;Tell all fools trying to execute us
- rts ;that our execution failed. ;-)
-
-
- Resident: dc.w RTC_MATCHWORD
- dc.l Resident
- dc.l ResEnd
- dc.b RTF_AUTOINIT
- dc.b ResVersion
- dc.b NT_LIBRARY
- dc.b Pri
- dc.l LibName
- dc.l IdString
- dc.l Init
-
- LibName: dc.b 'xpkFAST.library',0
- IdString: dc.b '$VER: xpkFAST.library V'
- VERSIONSTR
- dc.b ' ('
- VERSIONDATE
- dc.b ')',13,10,0
- EVEN
- ResEnd:
-
-
- Init: dc.l XpkFast_SIZEOF
- dc.l FuncTable
- dc.l DataTable
- dc.l InitRoutine
-
-
- ; --- sys
- FuncTable: dc.l Open
- dc.l Close
- dc.l Expunge
- dc.l Null
- ; --- xpksub
- dc.l PackerInfo
- dc.l PackChunk
- dc.l PackFree
- dc.l PackReset
- dc.l UnpackChunk
- dc.l UnpackFree
- ; --- omega
- dc.l -1
-
-
- DataTable: INITBYTE LH_TYPE,NT_LIBRARY
- INITLONG LN_NAME,LibName
- INITBYTE LIB_FLAGS,LIBF_SUMUSED+LIBF_CHANGED
- INITWORD LIB_VERSION,Version
- INITWORD LIB_REVISION,Revision
- INITLONG LIB_IDSTRING,IdString
- dc.l 0
-
-
- InitRoutine: move.l a5,-(a7)
- move.l d0,a5
- move.l a6,xid_SysLib(a5)
- move.l a0,xid_SegList(a5)
- move.l (a7)+,a5
- rts
-
- ;--- sys entries
-
- Open: addq.w #1,LIB_OPENCNT(a6)
- bclr.b #LIBB_DELEXP,LIB_FLAGS(a6)
- move.l a6,d0
- rts00: rts
-
-
- Close: moveq #0,d0
- subq.w #1,LIB_OPENCNT(a6)
- bne.s rts00
- btst.b #LIBB_DELEXP,LIB_FLAGS(a6)
- beq.s rts00
-
- ;;; Fall through to Expunge and remove the lib from memory.
-
- Expunge: movem.l d1-d2/a5-a6,-(a7)
- move.l a6,a5
- move.l xid_SysLib(a5),a6
- tst.w LIB_OPENCNT(a5)
- beq.s exp1
- bset.b #LIBB_DELEXP,LIB_FLAGS(a5)
- moveq #0,d0
- bra.s expEnd
-
- exp1: move.l xid_SegList(a5),d2
- move.l a5,a1
- CALLSYS Remove
- moveq #0,d0
- move.l a5,a1
- move.w LIB_NEGSIZE(a5),d0
- sub.l d0,a1
- add.w LIB_POSSIZE(a5),d0
- CALLSYS FreeMem
- move.l d2,d0
- expEnd: movem.l (a7)+,d1-d2/a5-a6
- rts
-
- Null: moveq #0,d0
- rts
-
- ; --- End of sys stuff ---
-
- END
-